import { defineConfig, loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";

// vue 自动导入
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";

import path from "path";
const resolve = (dir) => path.resolve(__dirname, dir);

import UnoCSS from "unocss/vite";

import { createSvgIconsPlugin } from "vite-plugin-svg-icons";

import Icons from "unplugin-icons/vite";
import IconsResolver from "unplugin-icons/resolver";

import { presetUno, presetAttributify, presetIcons } from "unocss";

// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
  // 获取当前环境的配置
  // 根据当前工作目录中的 `mode` 加载 .env 文件
  // 设置第三个参数为 '' 来加载所有环境变量，而不管是否有 `VITE_` 前缀。
  const config = loadEnv(mode, process.cwd() /*, ''*/);
  console.log("config", config);

  return {
    plugins: [
      vue(),

      // 插件配置
      AutoImport({
        eslintrc: {
          enabled: true,
        },
        imports: ["vue", "vue-router", "vue-i18n"],
      }),
      Components({
        // 指定组件位置，默认是src/components
        dirs: ["src/components"],
        extensions: ["vue"],
        dts: false,
        // ui库解析器
        resolvers: [
          // 自动按需加载iconify图标库图标
          IconsResolver({
            // icon的前缀 组件使用{prefix}-{collection}-{icon} eg:i-ep-search
            prefix: "i",
            // enabledCollections:['ep']  这是可选的，默认启用 Iconify 支持的所有集合，ep指的是element_ui的图标库
            // alias: { park: 'icon-park' } 集合的别名
          }),
        ],
      }),
      UnoCSS({
        presets: [presetUno(), presetAttributify(), presetIcons()],
      }),
      createSvgIconsPlugin({
        // 指定需要缓存的图标文件夹
        iconDirs: [path.resolve(process.cwd(), "src/assets/icons")],
        // 指定symbolId格式
        symbolId: "icon-[dir]-[name]",
      }),
      Icons({
        // 自动安装图标
        autoInstall: true,
        // 缩放比 相对1em
        scale: 1,
        // 编译方式
        compiler: "vue3",
      }),
    ],

    server: {
      proxy: {
        "/api": {
          // target: "http://192.168.1.33:8088",
          target: config.VITE_APP_BASE_URL,
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/api/, ""),
        },
      },
    },

    define: {
      "process.env": {
        VITE_API_URL: "/",
        ...config,
      },
    },

    resolve: {
      // 配置路径别名
      alias: {
        "@": resolve("src"),
      },
      extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
    },

    // css 配置
    css: {
      preprocessorOptions: {
        // sass
        scss: {
          additionalData: `@import "@/styles/index.scss";`,
        },
        // // css
        // css: { charset: false },
        // // less
        // less: {
        //   modifyVars: {
        //     hack: 'true; @import "@/styles/index";',
        //   },
        //   javascriptEnabled: true,
        // },
      },
    },
  };
});
